package com.liuyu.common.framework.rocketmq.vo;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.liuyu.common.framework.rocketmq.kits.RocketLevelEnum;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Set;

/**
 * @ClassName QueueMessage

 * @Author: liuyu
 * @Date: Created in 2021/7/29 15:00
 * @Version: 1
 * @Modified By:
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public class MqMessage<T> implements Serializable {
    private static final long serialVersionUID = 3099262894812427885L;
    /**
     * 顺序消息Key，相同的key投递到相同的队列中 根据这个值的hash进行投递到指定的队列
     */
    private String key;
    /**
     *  消息类型
     */
    private String messageType;
    /**
     *  消息体
     */
    private T message;
    /**
     * 首次发送时间
     */
    private Date date;
    /**
     * 重试次数
     */
    private Integer times;
    /**
     * 重试消息的数据库主键
     */
    private Integer pKey;
    /**
     * 主题 标签
     */
    private String tags;
    /**
     * 发送超时
     */
    private long timeout;
    /**
     * 延迟等级  Object extend
     */
    private RocketLevelEnum level;

    /**
     * 事务消息扩展数据
     */
    private Object extend;

    /**
     * 当前投递投递次数
     */
    private Integer deliveryTime;

    /**
     * 投递次数集合
     */
    private Set<Integer> deliveryTimeSet;

    /**
     * 主题
     */
    private String topic;
}
